今天就來簡單的介紹一下Gemfile吧!
Gemfile 是 Rails 用來管理每個 application 要使用哪些 Gem 的檔案。
同時也是個紀錄,讓每份專案不論在哪裏被pull下來,都能根據Gemfile裡的紀錄,
來安裝對應的Gem,以期能達到相同的效果。
在專案裡的Gemfile大概是長這個樣子的:(以rails 5.2.3為例)
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '2.6.3'
gem 'rails', '~> 5.2.3'
gem 'sqlite3'
gem 'puma', '~> 3.11'
# .....
group :development, :test do
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
gem 'hirb-unicode'
gem 'rspec-rails', '~> 3.4', '>= 3.4.2'
end
group :development do
gem 'web-console', '>= 3.3.0'
gem 'listen', '>= 3.0.5', '< 3.2'
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
end
group :test do
gem 'capybara', '>= 2.15'
gem 'selenium-webdriver'
gem 'chromedriver-helper'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
下面我們就來介紹檔案裡面到底寫些什麼吧!
source 'https://rubygems.org’
git_source(:github) { |repo| "https://github.com/#{repo}.git” }
ruby '2.6.3'
gem 'rails', '~> 5.2.3'
最簡單的放式:只要在Gemfile裡填入你想安裝的gem的名字,
然後在終端機專案的目錄底下執行bundle
就可以啦!
蛤?你問為什麼不是bundle install
,當然是因為懶啊...
gem '你要安裝的gem'
bundle
版本設定大約可以分為下面幾種:
gem 'sqlite3'
gem 'puma', '3.11'
gem 'listen', '>= 3.0.5', '< 3.2'
gem 'bootstrap', '~> 4.3.1'
#其他它是這個意思
gem 'bootstrap', '>= 4.3.1', '< 4.4'
順便補充一下版本號:版本號的組成是這樣的:
"#{major}.#{minor}.#{build}"
Major: 是主版本號,重大功能變更或是架構有重大更改時會更動,數值才會更動。
Minor: 是次(子)版本號,用在小規模的功能增加、調整或變動時。
Build: 是階段版本號,通常是修復bug或是一些很小的更動。
Rails 將應用程序的開發環境分為三種:Product(上線/發佈), Development(開發), Test(測試)。
放在 group :development, :test 裡,代表只有 開發和測試的時候會使用。
放在 group :development 或是 group :test裡,則分別代表只有在開發或測試的時候會使用。
而其他沒有被 group 包起來的 gem ,則是上線/發佈時才會使用到的gem。
姆...大概就是這樣啦!
什麼!!鐵人賽才過了1/3嗎? 我們明天再見吧!